Проверка библиотек Kodland 1741

Проверка библиотек курса Kodland 1741 · 24 октября 2026 года.

Проверены 20 пакетов: установка, импорты и выбранные вызовы из тем курса. Среда: Python 3.13.5, macOS 26.5.1, ARM64. Пакеты устанавливались в отдельные venv внутри .library-audit; рабочие зависимости пользователя не изменялись.

Подтверждена несовместимость OpenCV 5 с текущим примером Haar CascadeClassifier. С OpenCV 4.12.0.88 и NumPy 2.2.6 единый набор из 19 основных пакетов установился; pip check не нашёл нарушенных зависимостей. dlib 20.0.1 проверен в отдельном окружении после сборки из исходников.

На итоговом наборе 15 локальных проверок завершились ожидаемым результатом. Это включает подтверждение отказа неверного примера schedule и обнаружение недоступного датчика температуры, поэтому не означает, что все исходные примеры курса исправны. Дополнительно выполнены реальный pytest с HTML/coverage-отчётами, Jupyter notebook, публичные GET к PokeAPI/Open-Meteo, перевод тестовой фразы и рендер карты с загрузкой Natural Earth.

Это проверка совместимости библиотечных вызовов, а не полный запуск каждого учебного проекта. Windows/Linux, другие версии Python, камеры и реальные окна не проверялись. Для Telegram проверен локальный API без подключения к серверу; живые боты, права администраторов и доставка сообщений не проверены. Генерация изображений Leonardo и её модель/API требуют действующего ключа и квоты, поэтому успешная работа этого сервиса не подтверждена. Google Colab и полные notebooks курса не запускались. face_recognition отдельно не установлен: проверка бинарного разрешения остановилась на dlib; это не доказательство невозможности сборки из исходников.

Проверенные зависимости · dlib отдельно · Общий аудит

Что исправить

1. OpenCV 5 ломает Haar-классификатор

Высокий · 159059 · 159071 · 159072

Заменить неограниченную установку на проверенный opencv-python==4.12.0.88; для этого набора использовать numpy==2.2.6. Обновление до 5.x должно сопровождаться отдельной миграцией кода и проверкой XML.

2. NumPy 1.21.2 из примера не совместим с Python 3.13

Высокий · 159049

Этот выпуск требует Python <3.11. Обновить пример requirements.txt или явно указать подходящую старую версию Python.

3. Pandas 1.2.0 из примера не имеет готового wheel для проверенной среды

Средний · 159049

Не использовать этот старый пример как универсальную установочную инструкцию. Проверялось наличие бинарной сборки, сборка исходников pandas не выполнялась.

4. Неверное расписание schedule

Высокий · 159021

Использовать schedule.every().monday.at("14:00").do(my_task). Неправильный вариант курса воспроизведён с ScheduleValueError.

5. Первое измерение psutil.cpu_percent() без interval

Средний · 159653 · 159654

Задать interval=1 либо отбросить первую неблокирующую пробу и дождаться следующего измерения.

6. Обещание кроссплатформенности мониторинга без оговорок

Средний · 159653

Не обещать температуру и все датчики на каждой ОС. Проверять hasattr и обрабатывать AccessDenied/PermissionError; отсутствие датчика показывать как недоступность.

7. Первый запуск Cartopy требует загрузки геоданных

Средний · 159065

Пояснить сетевую загрузку Natural Earth, подготовить кэш или приложить необходимые данные для офлайн-занятия.

8. Устаревшие команды интерфейса Jupyter в VS Code

Средний · 159062

Показать Create: New Jupyter Notebook, Select Kernel нужного окружения и ... → Export → Python Script. Установить ipykernel именно в выбранную среду.

9. Данные и отображение для dlib не поставляются одним import

Средний · 159075

Явно дать источник и распаковку shape_predictor_68_face_landmarks.dat. Функцию show(image) из готового фрагмента определить или заменить на корректный для Colab способ отображения. Не считать отсутствующий wheel запретом использования dlib: в этой среде сборка из исходников прошла.

10. Пояснение к Open-Meteo использует чужую структуру JSON

Высокий · 159660

Ключ должен быть data["current_weather"]["temperature"], а не data["main"]["temp"]. Проверено на реальном ответе API.

Проверенные пакеты

Пакет / версияРезультатЧто проверено
opencv-python
5.0.0.93 / 4.12.0.88
M5L3–M5L4
Несовместимость 5.0В 5.0 нет cv2.CascadeClassifier: точный AttributeError из сообщения коллеги. В 4.12 классификатор и XML загружаются. imread/imwrite/cvtColor/GaussianBlur работают в обеих версиях.
NumPy
2.5.4 / 2.2.6
M4–M5
Работает; старый пример несовместимМассивы и совместная работа с OpenCV/Cartopy/SciPy проверены. Для OpenCV 4.12 выбран NumPy 2.2.6 согласно ограничениям пакета. numpy==1.21.2 из примера запрещает Python >=3.11.
requests
2.34.2
M1L1, M1L4, M8L3
РаботаетДекодированы dict/list/int/null. GET к PokeAPI и Open-Meteo вернул 200 и ожидаемые поля. JSONDecodeError при не-JSON ответе воспроизведён. Отправка реальных POST и запросов с секретами не выполнялась.
beautifulsoup4
4.15.0
M1L1, M2L2
РаботаетНа локальном HTML проверены BeautifulSoup(...,"html.parser"), text, find, find_all и чтение href через get.
pyTelegramBotAPI (import telebot)
4.37.1
M1–M10
Локальный API работаетСозданы бот с фиктивным токеном, обработчики команд/callback/join_request, inline/reply-клавиатуры. Проверено наличие методов send_message/send_photo/reply_to/polling/ban/approve. К Telegram не подключались: доставка сообщений и права бота не проверены.
translate
3.8.1
M2L4
Работает с проверенным сервисомTranslator(from_lang="ru",to_lang="en") и translate("Привет, как дела?") дали «Hi, how are you?». Провайдер по умолчанию — MyMemory. Это разовый сетевой результат, не гарантия доступности/лимитов сервиса.
schedule
1.2.2
M4L1
Библиотека работает; пример курса неверенevery().monday.at("14:00") работает. every().week.at("Monday 14:00") вызывает ScheduleValueError. Это ошибка примера, а не регрессия установленного пакета.
matplotlib
3.11.2
M5L1
РаботаетСозданы и сохранены PNG с двумя температурными рядами, цветами, маркерами и сеткой. Использован Agg для проверки без окна. Интерактивный plt.show() не тестировался.
Cartopy
0.26.0
M5L2
Работает; нужны данные картПроверены PlateCarree, stock_img, Geodetic, coastlines и BORDERS. Для двух последних при первом рендере скачались данные Natural Earth. Офлайн-запуск требует заранее подготовленных данных.
pykdtree
1.4.3
M5L2
РаботаетKDTree.query правильно находит ближайшую точку в числовом массиве. Это проверка API, а не геодезической точности алгоритма для широты/долготы.
SciPy
1.18.1
M5L2
Работаетscipy.spatial.cKDTree.query проверен на том же числовом примере.
psutil
7.2.2
M8L2, M8L4
Базовый мониторинг работает; ограничения ОСCPU, физические/логические ядра, RAM, диск, process_iter, сеть и boot_time проверены. В песочнице boot_time давал PermissionError, вне неё работает. На macOS функция sensors_temperatures отсутствует — это ограничение платформы, а не ошибка установки.
pytest
9.1.1
M7
РаботаетВ отдельной папке выполнен реальный тест, результат 1 passed. Автоматического создания pytest.ini не произошло. Полные тестовые наборы проектов курса не запускались.
pytest-cov
7.1.0
M7
РаботаетКоманда --cov=calculator --cov-report=html создала htmlcov/index.html.
pytest-html
4.2.0
M7
РаботаетКоманда --html=test_report.html создала HTML-отчёт.
pgzero
1.2.1
M1, M9
РаботаетНа искусственном спрайте созданы Actor, выполнены angle_to, присваивание angle, collidepoint и draw. Угол angle_to сам не изменяет angle. Полный игровой цикл и управление пользователем не проверены.
pygame
2.6.1
M1, M9
Работает в тестовом видеорежимеСозданы Surface, изображение PNG и виртуальный экран SDL dummy. Камера, микрофон, аудиовыход и реальные окна не открывались.
jupyter
1.1.1
M5L3–M5L4
РаботаетПакет установлен; notebook реально выполнен в ядре итогового окружения и экспортирован в .py. VS Code не управлялся: актуальные пункты меню сверены с документацией Microsoft.
ipykernel
7.4.0
M5L3–M5L4
РаботаетЗапущено и завершено временное ядро; вывод sys.executable подтвердил нужное venv. Постоянные ядра в настройки пользователя не регистрировались.
dlib
20.0.1
M5L4
Работает после сборки20.0.1 установлен из исходников. Загружена официальная модель .dat; get_frontal_face_detector и shape_predictor выполнены на искусственном изображении, возвращено 68 точек. Точность распознавания на настоящих лицах не оценивалась.

Повторное использование

Итоговый набор: 19 основных пакетов с OpenCV 4.12.0.88 и NumPy 2.2.6. dlib проверен отдельно. Зафиксированы именно версии, прошедшие этот запуск; на другой ОС и версии Python нужен повторный прогон.

python3 -m venv .venv
# Активируй .venv и выбери это окружение в VS Code
python -m pip install -r requirements-course-tested.txt
python -m pip check

Скрипты проверок сохранены рядом с отчётом. Подробные исходные результаты находятся в .library-audit/*.json; полный снимок зависимостей — .library-audit/requirements-baseline-full.txt.

Источники